// src/services/postService.js
import apiClient from './api'

/**
 * 分页获取帖子列表 (可选按板块筛选)
 * @param {Object} params - 查询参数 (page, size, categoryId, sortBy, sortDir)
 * @returns {Promise<AxiosResponse<any>>}
 */
export const getPosts = async (params = {}) => {
  return await apiClient.get('/posts', { params })
}

/**
 * 根据 ID 获取帖子详情
 * @param {number} id - 帖子 ID
 * @returns {Promise<AxiosResponse<any>>}
 */
export const getPostById = async (id) => {
  return await apiClient.get(`/posts/${id}`)
}

/**
 * 发布新帖子
 * @param {Object} postData - 帖子数据 { title, content, categoryId }
 * @returns {Promise<AxiosResponse<any>>}
 */
export const createPost = async (postData) => {
  return await apiClient.post('/posts', postData)
}

/**
 * 更新帖子
 * @param {number} id - 帖子 ID
 * @param {Object} postData - 更新的帖子数据 { title, content }
 * @returns {Promise<AxiosResponse<any>>}
 */
export const updatePost = async (id, postData) => {
  return await apiClient.put(`/posts/${id}`, postData)
}

/**
 * 删除帖子
 * @param {number} id - 帖子 ID
 * @returns {Promise<AxiosResponse<any>>}
 */
export const deletePost = async (id) => {
  return await apiClient.delete(`/posts/${id}`)
}

/**
 * 点赞帖子
 * @param {number} id - 帖子 ID
 * @returns {Promise<AxiosResponse<any>>}
 */
export const likePost = async (id) => {
  return await apiClient.post(`/posts/${id}/like`)
}

/**
 * 取消点赞帖子
 * @param {number} id - 帖子 ID
 * @returns {Promise<AxiosResponse<any>>}
 */
export const unlikePost = async (id) => {
  return await apiClient.delete(`/posts/${id}/like`)
}

/**
 * 收藏帖子
 * @param {number} id - 帖子 ID
 * @returns {Promise<AxiosResponse<any>>}
 */
export const favoritePost = async (id) => {
  return await apiClient.post(`/posts/${id}/favorite`)
}

/**
 * 取消收藏帖子
 * @param {number} id - 帖子 ID
 * @returns {Promise<AxiosResponse<any>>}
 */
export const unfavoritePost = async (id) => {
  return await apiClient.delete(`/posts/${id}/favorite`)
}

/**
 * 置顶帖子
 * @param {number} id - 帖子 ID
 * @returns {Promise<AxiosResponse<any>>}
 */
export const topPost = async (id) => {
  return await apiClient.post(`/posts/${id}/top`)
}

/**
 * 取消置顶帖子
 * @param {number} id - 帖子 ID
 * @returns {Promise<AxiosResponse<any>>}
 */
export const untopPost = async (id) => {
  return await apiClient.delete(`/posts/${id}/top`)
}

/**
 * 加精帖子
 * @param {number} id - 帖子 ID
 * @returns {Promise<AxiosResponse<any>>}
 */
export const essencePost = async (id) => {
  return await apiClient.post(`/posts/${id}/essence`)
}

/**
 * 取消加精帖子
 * @param {number} id - 帖子 ID
 * @returns {Promise<AxiosResponse<any>>}
 */
export const unessencePost = async (id) => {
  return await apiClient.delete(`/posts/${id}/essence`)
}

/**
 * 获取热门帖子列表 (分页)
 * @param {Object} params - 查询参数 (page, size, days, sort 等)
 * @returns {Promise<AxiosResponse<any>>}
 */
export const getPopularPosts = async (params = {}) => {
  // 假设后端有 /api/posts/popular 端点
  // 或者使用 /api/posts 并添加排序参数，例如按 viewCount 或 replyCount 降序
  // return await apiClient.get('/posts', { params: { ...params, sortBy: 'viewCount', sortDir: 'desc' } });
  return await apiClient.get('/posts/popular', { params }) // 使用专门的热门帖子端点
}

/**
 * 分页获取热门帖子列表
 * @param {Object} params - 查询参数 (page, size, sortBy, sortDir)
 * @returns {Promise<AxiosResponse<any>>}
 */
export const getHotPosts = async (params = {}) => {
  return await apiClient.get('/posts/hot', { params })
}
